| | import qualified Maybe import qualified Prelude
|
| | genericReplicate :: Integral b => b -> a -> [a]
| genericReplicate | n x | = | genericTake n (repeat x) |
|
| | genericTake :: Integral a => a -> [b] -> [b]
| genericTake | zu vw | = | genericTake5 zu vw |
| genericTake | vx [] | = | genericTake3 vx [] |
| genericTake | n (x : xs) | = | genericTake2 n (x : xs) |
| genericTake | vy vz | = | genericTake0 vy vz |
|
| |
| genericTake0 | vy vz | = | error [] |
|
| |
| genericTake1 | n x xs True | = | x : genericTake (n - 1) xs |
| genericTake1 | n x xs False | = | genericTake0 n (x : xs) |
|
| |
| genericTake2 | n (x : xs) | = | genericTake1 n x xs (n > 0) |
| genericTake2 | yv yw | = | genericTake0 yv yw |
|
| |
| genericTake3 | vx [] | = | [] |
| genericTake3 | yy yz | = | genericTake2 yy yz |
|
| |
| genericTake4 | True zu vw | = | [] |
| genericTake4 | zv zw zx | = | genericTake3 zw zx |
|
| |
| genericTake5 | zu vw | = | genericTake4 (zu == 0) zu vw |
| genericTake5 | zy zz | = | genericTake3 zy zz |
|
| | import qualified Maybe import qualified Prelude
|
| | genericReplicate :: Integral b => b -> a -> [a]
| genericReplicate | n x | = | genericTake n (repeat x) |
|
| | genericTake :: Integral b => b -> [a] -> [a]
| genericTake | zu vw | = | genericTake5 zu vw |
| genericTake | vx [] | = | genericTake3 vx [] |
| genericTake | n (x : xs) | = | genericTake2 n (x : xs) |
| genericTake | vy vz | = | genericTake0 vy vz |
|
| |
| genericTake0 | vy vz | = | error [] |
|
| |
| genericTake1 | n x xs True | = | x : genericTake (n - 1) xs |
| genericTake1 | n x xs False | = | genericTake0 n (x : xs) |
|
| |
| genericTake2 | n (x : xs) | = | genericTake1 n x xs (n > 0) |
| genericTake2 | yv yw | = | genericTake0 yv yw |
|
| |
| genericTake3 | vx [] | = | [] |
| genericTake3 | yy yz | = | genericTake2 yy yz |
|
| |
| genericTake4 | True zu vw | = | [] |
| genericTake4 | zv zw zx | = | genericTake3 zw zx |
|
| |
| genericTake5 | zu vw | = | genericTake4 (zu == 0) zu vw |
| genericTake5 | zy zz | = | genericTake3 zy zz |
|
| | import qualified Maybe import qualified Prelude
|
| | genericReplicate :: Integral b => b -> a -> [a]
| genericReplicate | n x | = | genericTake n (repeat x) |
|
| | genericTake :: Integral b => b -> [a] -> [a]
| genericTake | zu vw | = | genericTake5 zu vw |
| genericTake | vx [] | = | genericTake3 vx [] |
| genericTake | n (x : xs) | = | genericTake2 n (x : xs) |
| genericTake | vy vz | = | genericTake0 vy vz |
|
| |
| genericTake0 | vy vz | = | error [] |
|
| |
| genericTake1 | n x xs True | = | x : genericTake (n - fromInt (Pos (Succ Zero))) xs |
| genericTake1 | n x xs False | = | genericTake0 n (x : xs) |
|
| |
| genericTake2 | n (x : xs) | = | genericTake1 n x xs (n > fromInt (Pos Zero)) |
| genericTake2 | yv yw | = | genericTake0 yv yw |
|
| |
| genericTake3 | vx [] | = | [] |
| genericTake3 | yy yz | = | genericTake2 yy yz |
|
| |
| genericTake4 | True zu vw | = | [] |
| genericTake4 | zv zw zx | = | genericTake3 zw zx |
|
| |
| genericTake5 | zu vw | = | genericTake4 (zu == fromInt (Pos Zero)) zu vw |
| genericTake5 | zy zz | = | genericTake3 zy zz |
|